/*

 * Copyright 2008 Dirección Provincial de Informática de la Provincia de Buenos Aires.  All Rights Reserved

 * Dirección Provincial de Informática de la Provincia de Buenos Aires Proprietary and Confidential.

 *

 * You agree to use Your best efforts to protect the software and documentation

 * from unauthorized copy or use. The software source code represents and embodies

 * trade secrets of Dirección Provincial de Informática de la Provincia de Buenos Aires and/or its licensors.

 * The source code and embodied trade secrets are not licensed to you and any modification,

 * addition or deletion is strictly prohibited. You agree not to disassemble, decompile,

 * or otherwise reverse engineer the software in order to discover the source code and/or

 * the trade secrets contained in the source code.

 *

 *

 * Derecho de autor 2008 Dirección Provincial de Informática de la Provincia de Buenos Aires.  Todos los derechos reservados.

 * Propiedad de Dirección Provincial de Informática de la Provincia de Buenos Aires y Confidencial.

 *

 * Por la presente acuerdo hacer mi mayor esfuerzo para proteger el software y la documentación

 * de la copia o el uso no autorizados. El código fuente del software representa e incluye

 * secretos comerciales de Dirección Provincial de Informática de la Provincia de Buenos Aires y/o sus licenciantes. 

 * No se le otorga licencia del código fuente ni los secretos comerciales incluidos;

 * y cualquier modificación, agregado o eliminación se encuentra estrictamente prohibida.

 * Asimismo, por la presente me comprometo a no desarmar, descompilar, o de alguna forma utilizar

 * técnicas de ingeniería inversa sobre el software para descubrir su fuente y/o los

 * secretos comerciales contenidos en el código fuente.

 *

 */

package jmc.ui.front.action;




import java.sql.Timestamp;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jmc.core.model.Usuario;
import jmc.core.service.PdiManager;
import jmc.core.service.SendTravelsManager;
import jmc.ui.front.form.ABMUsuarioForm;
import jmc.util.DateUtil;
import jmc.util.core.Utiles;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.DispatchActionSupport;

import com.ibm.as400.access.AS400;



/**
 * @author Juan Manuel Carrascal.
 *
 */
public class ABMUsuarioAction extends DispatchActionSupport{
 

	public ActionForward userAuthentication(
			ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response) throws Exception{

		String codigo = (String)request.getParameter("codigo");
		String cliente = (String)request.getParameter("marca");
		String password = (String)request.getParameter("password");

		int numCliente = 0;
		
		try{
			numCliente = Integer.parseInt(cliente);
		}catch(NumberFormatException e){
			e.printStackTrace();
		}

		if (((Usuario)request.getSession().getAttribute("usuario")) != null && ((Usuario)request.getSession().getAttribute("usuario")).getNumCliente() == numCliente){
			return mapping.findForward("success_userAuthentication");
		}
		
		
		try{
			//int pass = Integer.parseInt(password);
			//if (Utiles.isUserAuthentication(pass)){
			if (codigo.equalsIgnoreCase("pdi")){
				System.out.println(" password: " + password.trim() + " cliente: " + numCliente);
				if ((password.trim().equalsIgnoreCase("bmwtfsa") && numCliente == 26) || (password.trim().equalsIgnoreCase("claudiol") && numCliente == 1) ||(password.trim().equalsIgnoreCase("vwhernan") && numCliente == 2) || (password.trim().equalsIgnoreCase("fdengra") && numCliente == 1) || (password.trim().equalsIgnoreCase("mbdiana") && numCliente == 17) || (password.trim().equalsIgnoreCase("chrdiana") && numCliente == 8) || (password.trim().equalsIgnoreCase("chery09") && numCliente == 54)){
					Usuario usuario = new Usuario();
					usuario.setUsername(codigo);
					usuario.setAutentication(true);
					//usuario.setNombreCliente("VW Argentina");
					usuario.setNumCliente(numCliente);
					//AS400 as400 = new AS400("www.transfurlong.com.ar", "coinse", "c2259");
					//AS400 as400Online = new AS400("www.transfurlong.com.ar", "coinse", "c2259");
					AS400 as400 = new AS400("192.1.1.1", "coinse", "c2259");
					AS400 as400Online = new AS400("192.1.1.1", "coinse", "c2259");
					usuario.setAs400(as400);
					usuario.setAs400Online(as400Online);
					//Generar Random
					String jobActual = Utiles.getRandomNumber();
					//String jobActual = "611029";
					//Guardo Random en sessiion
					usuario.setJobActual(jobActual);
					//Llamo al programa
					PdiManager pdiManager = (PdiManager) getWebApplicationContext().getBean("PdiManager");
					
					pdiManager.callThreadD00008(jobActual,usuario);
					usuario.setFechaInventario(DateUtil.getFormatedDate(new Timestamp(System.currentTimeMillis())));
					request.getSession().setAttribute("usuario", usuario);
					
					return mapping.findForward("success_userAuthentication");
				}else{
					return mapping.findForward("error_userAuthentication");
				}
			}
			if (codigo.equalsIgnoreCase("vdp")){
				System.out.println(" password: " + password.trim() + " cliente: " + numCliente);
				if ((password.trim().equalsIgnoreCase("bmwtfsa") && numCliente == 26) ||(password.trim().equalsIgnoreCase("claudiol") && numCliente == 1) ||(password.trim().equalsIgnoreCase("vwhernan") && numCliente == 2) || (password.trim().equalsIgnoreCase("fdengra") && numCliente == 1) || (password.trim().equalsIgnoreCase("mbdiana") && numCliente == 17) || (password.trim().equalsIgnoreCase("chrdiana") && numCliente == 8) || (password.trim().equalsIgnoreCase("chery09") && numCliente == 54)){
					Usuario usuario = new Usuario();
					usuario.setUsername(codigo);
					usuario.setAutentication(true);
					usuario.setIdPerfil(2l);
					SendTravelsManager sendTravelsManager = (SendTravelsManager) getWebApplicationContext().getBean("SendTravelsManager");
					try{
						usuario.setNombreCliente(cliente + " - " + sendTravelsManager.getNombreCliente(Long.parseLong(String.valueOf(numCliente))));
					}catch(Exception e){
						e.printStackTrace();
					}
					
					usuario.setNumCliente(numCliente);

					AS400 as400Online = new AS400("192.1.1.1", "coinse", "c2259");
					//AS400 as400Online = new AS400("www.transfurlong.com.ar", "coinse", "c2259");
					usuario.setAs400Online(as400Online);
					//Generar Random
					//Llamo al programa
					//PdiManager pdiManager = (PdiManager) getWebApplicationContext().getBean("PdiManager");					
					//pdiManager.callThreadD00008(jobActual,usuario);
					//usuario.setFechaInventario(DateUtil.getFormatedDate(new Timestamp(System.currentTimeMillis())));
					request.getSession().setAttribute("usuario", usuario);
					
					return mapping.findForward("success_vdpUserAuthentication");
				}else{
					return mapping.findForward("error_userAuthentication");
				}
			}
		}catch(NumberFormatException ne){
			ne.printStackTrace();
			return mapping.findForward("error_userAuthentication");
		}
		return mapping.findForward("error_userAuthentication");
	}

	public ActionForward userPdiAuthentication(
			ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response) throws Exception{


		ABMUsuarioForm usuarioForm = (ABMUsuarioForm) form;
		
		String username = usuarioForm.getUsername();
		String password = usuarioForm.getPassword();
		PdiManager pdiManager = (PdiManager) getWebApplicationContext().getBean("PdiManager");
		
		try{
			//int pass = Integer.parseInt(password);
			String sector = pdiManager.getProcesoByPK(username.trim().toUpperCase());
			//if (Utiles.isUserAuthentication(pass)){
			if (sector != null && !sector.equals("") && password.trim().equalsIgnoreCase("pacheco")  ) {
				Usuario usuario = new Usuario();
				usuario.setUsername(username.toUpperCase());
				usuario.setAutentication(true);
				//AS400 as400Online = new AS400("www.transfurlong.com.ar", "coinse", "c2259");
				AS400 as400Online = new AS400("192.1.1.1", "coinse", "c2259");
				usuario.setAs400Online(as400Online);
				usuario.setSectorActual(sector);
				request.getSession().setAttribute("usuario", usuario);	
				usuarioForm.setSector(usuario.getSectorActual()); 
				return mapping.findForward("success_userPdiAuthentication");
			}else{
				request.setAttribute("badLogin", "true");
				return mapping.findForward("error_userPdiAuthentication");
			}
		}catch(Exception ne){
			ne.printStackTrace();
			return mapping.findForward("error_userPdiAuthentication");
		}
	}

	public ActionForward outUser(
			ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response) throws Exception{		
		
		request.getSession().removeAttribute("usuario");
		
		return mapping.findForward("success_outUser");
	}
	
	public ActionForward outPdi(
			ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response) throws Exception{		
		
		request.getSession().removeAttribute("usuario");
		
		return mapping.findForward("success_outPdi");
	}
	
	public ActionForward loadVin(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		ABMUsuarioForm usuarioForm = (ABMUsuarioForm) form;

		Usuario usuario = (Usuario) request.getSession()
		.getAttribute("usuario");
		
		usuarioForm.setSector(usuario.getSectorActual());
		
		return mapping.findForward("success_loadVin");

	}	

}
